<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>xilskey: xilskey_puf_registration.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">xilskey
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;"
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xilskey__puf__registration_8h.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#define-members">Macros</a>  </div>
  <div class="headertitle">
<div class="title">xilskey_puf_registration.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This file contains header interface related information for PUF device and macros used in the driver. </p>
<dl class="section note"><dt>Note</dt><dd><pre class="fragment">          User configurable parameters for PUF
</pre> <hr/>
 <pre class="fragment">    #define XSK_PUF_INFO_ON_UART                    FALSE
    TRUE will display syndrome data on the UART com port
    FALSE will display any data on UART com port.

    #define XSK_PUF_PROGRAM_EFUSE                   FALSE
    TRUE will program the generated syndrome data, CHash ,Auxiliary values,
    and the Black key.
    FALSE will not program data into eFUSE.

    #define XSK_PUF_IF_CONTRACT_MANUFACTURER        FALSE
    This should be enabled when application is hand over to contract
    manufacturer.
    TRUE will allow only authenticated application.
    FALSE authentication is not mandatory.

    #define XSK_PUF_REG_MODE                        XSK_PUF_MODE4K
    PUF registration is performed in 4K mode. Only 4K mode is supported and
    user should not modify this value.

    #define XSK_PUF_READ_SECUREBITS                 FALSE
    TRUE will read the status of the PUF secure bits from eFUSEs and will be
    displayed on UART.
    FALSE will not read the secure bits.

    #define XSK_PUF_PROGRAM_SECUREBITS              FALSE
    TRUE will program PUF secure bits based on the user input provided
    at XSK_PUF_SYN_INVALID, XSK_PUF_SYN_WRLK and XSK_PUF_REGISTER_DISABLE
    FALSE will not program any PUF secure bits.

    #define XSK_PUF_SYN_INVALID                     FALSE
    TRUE will permanently invalidates the already programmed syndrome data.
    FALSE will not modify anything

    #define XSK_PUF_SYN_WRLK                        FALSE
    TRUE will permanently disable programming syndrome data into eFUSEs.
    FALSE will not modify anything.

    #define XSK_PUF_REGISTER_DISABLE                FALSE
    TRUE will permanently disable PUF syndrome data registration.
    FALSE will not modify anything.

    #define XSK_PUF_RESERVED                                FALSE
    TRUE programs this reserved eFUSE bit.
    FALSE will not modify anything.

    #define         XSK_PUF_AES_KEY
    "0000000000000000000000000000000000000000000000000000000000000000"
    The value will be converted to hex buffer and encrypts
    this with PUF in order to generate black key ,the black key will get
    written to the PS eFUSE array when XSK_PUF_PROGRAM_EFUSE macro is set
    to TRUE.
    This value should be given in string format. It should be 64 characters
    long, valid characters are 0-9,a-f,A-F. Any other character is
    considered as invalid  and will not burn Black key.
    Note: Provided here should be red key and application calculates the
    black key and programs into eFUSE if XSK_PUF_PROGRAM_EFUSE macro is
    TRUE.
    To avoid programming eFUSE results can be displayed on UART com port
    by making XSK_PUF_INFO_ON_UART to TRUE.

    #define         XSK_PUF_BLACK_KEY_IV    "000000000000000000000000"
    The value mentioned here will be converted to hex buffer.
    This is Initialization vector(IV) used with the AES-GCM cryptographic
    hardware in order to generate encrypted red key, which is black key.
    This value should be given in string format. It should be 24 characters
    long, valid characters are 0-9,a-f,A-F. Any other character is
    considered as invalid string.
</pre></dd></dl>
<pre>
 MODIFICATION HISTORY:</pre><pre> Ver   Who  Date        Changes
</p>
<hr/>
<p>
 6.1   rp   17/10/16 First release.
 6.2   vns  03/10/17 Added support for programming and reading one reserved
                     bit
 6.3   vns  10/05/18 Corrected the following macro
                     XSK_PUF_IV  to XSK_PUF_BLACK_KEY_IV and
                     XSK_PUF_IF_CONTRACT_MANUFATURER to
                     XSK_PUF_IF_CONTRACT_MANUFACTURER
 6.8   psl  06/07/19 Added doxygen tags
 7.5   ng   07/13/23 added SDT support
 </pre> </div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a98db935ff1ae5bab36372b82a95c68d9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilskey__puf__registration_8h.html#a98db935ff1ae5bab36372b82a95c68d9">XSK_PUF_REG_MODE</a>&#160;&#160;&#160;XSK_PUF_MODE4K</td></tr>
<tr class="memdesc:a98db935ff1ae5bab36372b82a95c68d9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Registration Mode XPUF_MODE4K.  <a href="#a98db935ff1ae5bab36372b82a95c68d9">More...</a><br/></td></tr>
<tr class="separator:a98db935ff1ae5bab36372b82a95c68d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a87d7dd3e751fecf6297c62441ff41c6e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilskey__puf__registration_8h.html#a87d7dd3e751fecf6297c62441ff41c6e">XPUF_INFO_ON_UART</a></td></tr>
<tr class="memdesc:a87d7dd3e751fecf6297c62441ff41c6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">If defined, sends information on UART.  <a href="#a87d7dd3e751fecf6297c62441ff41c6e">More...</a><br/></td></tr>
<tr class="separator:a87d7dd3e751fecf6297c62441ff41c6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adbb7fb6b4ef216b1231f0e27664e5fea"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilskey__puf__registration_8h.html#adbb7fb6b4ef216b1231f0e27664e5fea">XPUF_FUSE_SYN_DATA</a></td></tr>
<tr class="memdesc:adbb7fb6b4ef216b1231f0e27664e5fea"><td class="mdescLeft">&#160;</td><td class="mdescRight">If defined, writes syndrome data, black key, Aux and Chash values into eFUSE.  <a href="#adbb7fb6b4ef216b1231f0e27664e5fea">More...</a><br/></td></tr>
<tr class="separator:adbb7fb6b4ef216b1231f0e27664e5fea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9c505ec48684a1bd6180d6d0a9b551e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xilskey__puf__registration_8h.html#af9c505ec48684a1bd6180d6d0a9b551e">XPUF_CONTRACT_MANUFACTURER</a></td></tr>
<tr class="memdesc:af9c505ec48684a1bd6180d6d0a9b551e"><td class="mdescLeft">&#160;</td><td class="mdescRight">If defined, additional checks will be made to verify that app is authenticated before running.  <a href="#af9c505ec48684a1bd6180d6d0a9b551e">More...</a><br/></td></tr>
<tr class="separator:af9c505ec48684a1bd6180d6d0a9b551e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="af9c505ec48684a1bd6180d6d0a9b551e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_CONTRACT_MANUFACTURER</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>If defined, additional checks will be made to verify that app is authenticated before running. </p>

</div>
</div>
<a class="anchor" id="adbb7fb6b4ef216b1231f0e27664e5fea"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_FUSE_SYN_DATA</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>If defined, writes syndrome data, black key, Aux and Chash values into eFUSE. </p>

</div>
</div>
<a class="anchor" id="a87d7dd3e751fecf6297c62441ff41c6e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XPUF_INFO_ON_UART</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>If defined, sends information on UART. </p>

</div>
</div>
<a class="anchor" id="a98db935ff1ae5bab36372b82a95c68d9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define XSK_PUF_REG_MODE&#160;&#160;&#160;XSK_PUF_MODE4K</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Registration Mode XPUF_MODE4K. </p>

<p>Referenced by <a class="el" href="xilskey__puf__registration__example_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main()</a>.</p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
